/*
* ============================================================================
* 功能描述 ：adc功能
* 作者       ：ggls
* 创建日期 ：2024.04.10
* ----------------------------------------------------------------------------
* 更新历史 ：
*	日期 　　- 修改者   : 更新内容描述
*
* ============================================================================
*/

#include "main.h"
#define ADC_LDO_2V   1
#define ADC_LDO_2P4V 2


void ADC_INIT()
{
	ADCON0 = 0B11000001;   //	
	ADCON1 = 0B00000010;	
	
	TRISB6 = 1;
	ANS14 = 1;
}


/******************************************
返回  Adc_Result 

ADCchannel 为输入AD通道 0-18
         19  检测内部1.2V 
		 20  检测PGA输出
ADCLDORef =1,开启内部LDO 2.4V 作为ADC 参考
ADCLDORef =2,开启内部LDO 3V 作为ADC 参考
ADCLDORef =0,VDD 作为ADC 参考
*****************************************/
unsigned int  Read_ADC(unsigned char  ADCchannel,unsigned char	ADCLDORef)
{
 unsigned int	Adc_Result;
	unsigned char i=200;

	if(ADCLDORef==0)
	{
		ADCON1 = 0B00000000;
	}
	else if(ADCLDORef==1)
	{
		ADCON1 = 0B00000100;
	}
	else
	{
		ADCON1 = 0B00000111;	
	}
	
	CHS4 = 0;	
	if(ADCchannel >=16)
	{
		ADCchannel -= 16;	
		CHS4 = 1;	
	}
	
	ADCON0 &= 0b11000011;
	ADCON0 |= ADCchannel<<2; 
	asm("nop");
	GODONE = 1;
	while(GODONE==1&&i>0)
	{
		i--;
		asm("nop");
	}
	Adc_Result = ADRESH<<4;
	Adc_Result += ADRESL>>4;
	
	return Adc_Result;
	
}
	
	
	

